package se.sics.drsm.simulation.events;

import se.sics.drsm.model.SONConfiguration;
import se.sics.kompics.Init;
import se.sics.kompics.address.Address;
import se.sics.kompics.p2p.bootstrap.BootstrapConfiguration;
import se.sics.kompics.p2p.fd.ping.PingFailureDetectorConfiguration;
import se.sics.kompics.p2p.monitor.chord.server.ChordMonitorConfiguration;

import java.util.Random;

public final class DRSMSimulatorInit extends Init {

    public final Address address;
    public final Random random;
    public final BootstrapConfiguration bconfiguration; // Should be default values
    public final SONConfiguration chordConfiguration;
    public final PingFailureDetectorConfiguration failureDetectorConfiguration = null;
    public final ChordMonitorConfiguration chordMonitorConfiguration;

    /**
     * Instantiates a DRSM
     *
     * @param address                   self address
     * @param random                    a random instance
     * @param bconfiguration            bootstrap configuration
     * @param chordConfiguration        drsmconfiguration
     * @param chordMonitorConfiguration drsm monitor configuration
     */
    public DRSMSimulatorInit(Address address, Random random,
                             BootstrapConfiguration bconfiguration,
                             SONConfiguration chordConfiguration,
                             ChordMonitorConfiguration chordMonitorConfiguration) {
        super();
        this.address = address;
        this.random = random;
        this.bconfiguration = bconfiguration;
        this.chordConfiguration = chordConfiguration;
        this.chordMonitorConfiguration = chordMonitorConfiguration;
    }

}
